package cn.tedu.apiday05;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

//测试LinkedList
// LinkedList底层维护了一个链表结构，方便增加和删除，不方便查询，而且整个链表上的节点中，只存在两个高效的节点就是首尾元素
public class LinkedListAction {
    public static void main(String[] args) {
        //创建对象
        LinkedList<String> list =new LinkedList();
        //调用方法
        list.add("1");
        list.add("2");//向集合中添加元素
        list.add("4");
        list.add("3");
        list.add("1");
        //特点 元素有序，运行重复元素，存放null元素
        System.out.println(list);
        //继承的方法
        System.out.println(list.contains("4"));//判断集合中是否包含指定元素
        System.out.println(list.equals("4"));//判断集合是否和指定元素相等
        System.out.println(list.hashCode());//获取集合在内存中的哈希码值
        System.out.println(list.isEmpty());//判断集合是否为空
        System.out.println(list.size());//获取集合中元素的个数
        System.out.println(list.remove("4"));//移除集合中的指定元素
        Object[] objects = list.toArray();//把集合转成数组
        System.out.println(Arrays.toString(objects));
        list.add(2,"100");//在指定下标处，插入指定元素
        System.out.println(list);
        System.out.println(list.get(4));//获取下标为4的位置对应的元素
        System.out.println(list.indexOf(2));//获取指定元素第一次出现的索引值
        System.out.println(list.lastIndexOf("1"));//获取指定元素最后一次出现的索引值
        System.out.println(list.remove(3));//删除下标为3的位置对应的元素
        System.out.println(list);
        System.out.println(list.set(3,"99"));//把下标为3 的元素换成99  置换元素
        System.out.println(list);
        List<String> list1 = list.subList(2,4);//从下标2开始到下标为4结束进行截取  含头不含尾
        System.out.println(list1);
        //LinkedList特有方法
        list.addFirst("100");//添加首元素
        list.addLast("200");//添加尾元素
        System.out.println(list);
        System.out.println(list.getFirst());//获取首元素
        System.out.println(list.getLast());//获取尾元素
        System.out.println(list.removeFirst());//移除首元素
        System.out.println(list.removeLast());//移除尾元素
        System.out.println(list);

    }
}
